// #ifndef H5 
export default {
	hideAllNonBaseMenuItemfn() {

	},
	showAllNonBaseMenuItemfn() {

	}
}
// #endif
// #ifdef H5
let jweixin = require('jweixin-module');
import request from "@/z/function/request.js"
import config from "@/config/index.js"
import store from "@/store/index.js"
import qs from "qs"
export default {
	//判断是否在微信中    
	isWechat: function() {
		let ua = window.navigator.userAgent.toLowerCase();
		if (store.getters["user/utype103"]) {
			return false
		}
		if (ua.match(/micromessenger/i) == 'micromessenger') {
			//console.log('是微信客户端')  
			return true;
		} else {
			//console.log('不是微信客户端')  
			return false;
		}
	},

	initJssdk: async function(callback) {
		let uri = encodeURIComponent(window.location.href.split('#')[0]); //获取当前url然后传递给后台获取授权和签名信息  
		uni.$z.request("/wxjs", {
			url: uri
		}).then(data => {
			jweixin.config({
				debug: false, //
				appId: data[0].appId, // 必填，公众号的唯一标识
				timestamp: data[0].timestamp, // 必填，生成签名的时间戳
				nonceStr: data[0].nonceStr, // 必填，生成签名的随机串0
				signature: data[0].signature, // 必填，签名，见附录1
				jsApiList: ["addGoodsToFav", 'checkJsApi', 'chooseImage', "openBusinessView",
					'previewImage',
					'uploadImage',
					'downloadImage',
					'hideAllNonBaseMenuItem',
					'showAllNonBaseMenuItem',
					'openLocation', 'getLocation',
					'hideOptionMenu', 'showOptionMenu',
					'closeWindow', 'scanQRCode'
				],
				openTagList: ['wx-open-launch-weapp']
				// 必填，需要使用的JS接口列表，所有JS接口列表见附录2
			});
			if (callback) {
				callback(data);
			}
		})

	},
	sysscanQRCodePromise: function(callback) {

		if (!this.isWechat()) {
			console.log('不是微信客户端')
			return;
		}
		return new Promise((resolve) => {
			this.initJssdk(function(res) {
				jweixin.ready(function() {
					jweixin.scanQRCode({
						needResult: 0, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
						scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
						success: function(res) {

							let result = res
								.resultStr; // 当needResult 为 1 时，扫码返回的结果

							resolve(result)

						}
					});

				});
			});

		})
	},

	//扫一扫
	sysscanQRCode: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.scanQRCode({
					needResult: 0, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
					scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
					success: function(res) {

						let result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
						function urlfx(result, name) {
							let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
							let r = result.split("?")[1];
							if (r) {
								r = result.split("?")[1].match(reg);
								if (r) return decodeURI(r[2]);
								return null;
							}
						}
						let gtel = urlfx(result, "gtel");
						if (gtel) {
							uni.reLaunch({
								url: `/pages/ChargeCarsys/ChargeCarsys?gtel=${gtel}`
							});
						} else {
							uni.showToast({
								title: '扫描失败',
								duration: 2000,
								icon: "none"
							});
						}

					}
				});

			});
		});
	},
	wxchooseImage(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.chooseImage({
					count: 1, // 默认9
					sizeType: ['compressed'], // 可以指定是原图还是压缩图，默认二者都有
					sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
					success: function(res) {
						jweixin.uploadImage({
							isShowProgressTips: 1, // 默认为1，显示进度提示
							localId: res.localIds[0],
							success: function(res) {
								uni.$z.request('/wxPic', {
									serverId: res.serverId
								}).then(data => {
									// alert(JSON.stringify(data))
									callback(data)
								})
							},
							fail: function(res) {}
						});

					}
				});


			});
		});

	},
	wxpayScoreEnablefn(data, callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.checkJsApi({
					jsApiList: ['openBusinessView'], // 需要检测的JS接口列表
					success: function(res) {
						// alert(JSON.stringify(data.apply_permissions_token))
						if (res.checkResult.openBusinessView) {
							jweixin.invoke(
								'openBusinessView', {
									businessType: 'wxpayScoreUse',
									queryString: 'mch_id=' + data.mch_id + '&package=' +
										data.package + '&timestamp=' + data.timestamp
										.start_time + '&nonce_str=' + data.nonce_str +
										'&sign_type=' + data.sign_type + '&sign=' + data
										.sign
								},
								function(res) {
									// 从微信侧小程序返回时会执行这个回调函数
									// alert(JSON.stringify(res))
									var extraData = JSON.stringify(res.extraData);
									if (parseInt(res.err_code) === 0 && extraData
										.length > 20) {
										callback(true)
									} else {
										// callback(false)
										// 返回失败
									}
								});
						}

					},
					error: function() {}
				});




			});
		});
	},
	//hideAllNonBaseMenuItem
	hideAllNonBaseMenuItemfn: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}

		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.hideAllNonBaseMenuItem({
					success: function() {},
					error: function() {}
				});
			});
		});
	},
	showAllNonBaseMenuItemfn: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}

		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.showAllNonBaseMenuItem({
					success: function() {},
					error: function() {}
				});
			});
		});
	},
	//在需要定位页面调用  
	getlocation: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.getLocation({
					type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'  
					success: function(res) {
						callback(res)
					},
					fail: function(res) {
						callback(res)
					},
					// complete:function(res){  
					//     console.log(res)  
					// }  
				});
			});
		});
	},
	openlocation: function(data, callback) { //打开位置  

		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.openLocation({ //根据传入的坐标打开地图  
					latitude: data.latitude,
					longitude: data.longitude
				});
			});
		});
	},
	chooseImage: function(callback) { //选择图片  
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		//console.log(data);  
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.chooseImage({
					count: 1,
					sizeType: ['compressed'],
					sourceType: ['album'],
					success: function(rs) {
						callback(rs)
					}
				})
			});
		});
	},
	//微信支付  
	wxpay: function(data, callback) {
		//#ifdef MP-WEIXINGH5
		let tourl = `${window.location.pathname}${window.location.hash}`;
		tourl = window.location.href;
		let successRedirectUrl = window.location.href;
		console.log(window.location);
		if (data.zfokpage) {
			successRedirectUrl = `${window.location.origin}${window.location.pathname}#${data.zfokpage}`;
		}
		// console.log(window.location, successRedirectUrl, data);
		// pageUrl
		// delete 
		let payDataStr = {
			// ...data,
			timeStamp: data
				.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
			nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位
			package: encodeURIComponent(data.package), // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
			signType: data.signType, // 签名方式，默认为'SHA1$t("，使用新版支付需传入")MD5'
			paySign: encodeURIComponent(data.paySign), // 支付签名
			successRedirectUrl: encodeURIComponent(successRedirectUrl),
			failRedirectUrl: encodeURIComponent(tourl)
		}

		console.log(payDataStr, JSON.stringify(payDataStr));
		// `{${qs.stringify(payDataStr)}}`
		const url = '/pages/activites/weipay?payDataStr=' + JSON.stringify(payDataStr);
		console.log(url, successRedirectUrl);
		jweixin.miniProgram.navigateTo({
			url: url
		});
		return
		//#endif
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}

		this.initJssdk(function(res) {

			jweixin.ready(function() {
				jweixin.chooseWXPay({
					...data,
					timestamp: data
						.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
					nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位
					package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
					signType: data.signType, // 签名方式，默认为'SHA1$t("，使用新版支付需传入")MD5'
					paySign: data.paySign, // 支付签名
					success: function(res) {
						callback(res)
					},
					fail: function(res) {
						callback(res)
					},

				});
			});
		});
	}
}

// #endif